package com.inei.cie.capituloix;

import java.io.File;
import java.util.Calendar;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import com.inei.cie.Menu_Rural;
import com.inei.cie.R;
import com.inei.cie.capituloi.CapituloI_Capitulos_Activity;
import com.inei.cie.capitulov.CapituloV_Edificaciones_Activity;
import com.inei.cie.capitulov.CapituloV_Foto_Pisos;
import com.inei.cie.dao.CapituloIXDao;
import com.inei.cie.dao.UtilDB;

public class CapituloIX_Activity extends Activity implements OnClickListener{
	private Spinner spiCapitulo;
	private Spinner spiSeccion;
	private EditText etePregunta;
	private Button butFoto;
	private static final int TAKE_PHOTO_CODE = 1;
	private String rutaFoto;
	private String CodLocal;
	private int predio;
	private UtilDB utilDB;
	private static int VERSION = 0;
	private int rural;
	private TextView tviCodLocalPred;
	private Bundle b;
	private CapituloIXDao cap9Dao;
	private TextView tviEdificacion;
	private TextView tviPiso;
	private TextView tviAmbiente;
	private EditText eteEdificacion;
	private EditText etePiso;
	private EditText eteAmbiente;
	private Boolean pregunta = false;

	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		b = getIntent().getExtras();
		super.onCreate(savedInstanceState);
		setContentView(R.layout.capitulo_ix);
		cap9Dao = new CapituloIXDao(CapituloIX_Activity.this);
		spiCapitulo = (Spinner)findViewById(R.id.spiCapitulo);
		spiSeccion = (Spinner)findViewById(R.id.spiSeccion);
		etePregunta = (EditText)findViewById(R.id.etePregunta);
		butFoto = (Button)findViewById(R.id.butFoto);
		tviCodLocalPred = (TextView)findViewById(R.id.tviCodLocalPred);
		tviEdificacion = (TextView)findViewById(R.id.tviTituloEdificacion);
		tviPiso = (TextView)findViewById(R.id.tviTituloPiso);
		tviAmbiente = (TextView)findViewById(R.id.tviTituloAmbiente);
		eteEdificacion = (EditText)findViewById(R.id.eteEdificacion);
		etePiso = (EditText)findViewById(R.id.etePiso);
		eteAmbiente = (EditText)findViewById(R.id.eteAmbiente);
		butFoto.setOnClickListener(this);
		CodLocal = b.getString("id_local");
		predio = b.getInt("Nro_Pred");
		rural = b.getInt("Rural");
		pregunta = b.getBoolean("pregunta");
		tviCodLocalPred.setText("Codigo Local " + CodLocal + " - Predio Nro " + predio);
		utilDB = new UtilDB(getApplicationContext());
		
		ArrayAdapter<CharSequence> capitulos = ArrayAdapter.createFromResource(
				  this, R.array.capitulos, android.R.layout.simple_spinner_item );
				capitulos.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
				
		final ArrayAdapter<CharSequence> seccionCaratula = ArrayAdapter.createFromResource(
				this, R.array.seccionCaratula, android.R.layout.simple_spinner_item );
				seccionCaratula.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
				
		final ArrayAdapter<CharSequence> seccionCap1 = ArrayAdapter.createFromResource(
				this, R.array.seccionCap1, android.R.layout.simple_spinner_item );
				seccionCap1.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );

		final ArrayAdapter<CharSequence> seccionCap2 = ArrayAdapter.createFromResource(
				this, R.array.seccionCap2, android.R.layout.simple_spinner_item );
				seccionCap2.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
				
		final ArrayAdapter<CharSequence> seccionCap3 = ArrayAdapter.createFromResource(
				this, R.array.seccionCap3, android.R.layout.simple_spinner_item );
				seccionCap3.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
						
		final ArrayAdapter<CharSequence> seccionCap4 = ArrayAdapter.createFromResource(
				this, R.array.seccionCap4, android.R.layout.simple_spinner_item );
				seccionCap4.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
								
		final ArrayAdapter<CharSequence> seccionCap5 = ArrayAdapter.createFromResource(
				this, R.array.seccionCap5, android.R.layout.simple_spinner_item );
				seccionCap5.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
										
		final ArrayAdapter<CharSequence> seccionCap6 = ArrayAdapter.createFromResource(
				this, R.array.seccionCap6, android.R.layout.simple_spinner_item );
				seccionCap6.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
												
		final ArrayAdapter<CharSequence> seccionCap7 = ArrayAdapter.createFromResource(
				this, R.array.seccionCap7, android.R.layout.simple_spinner_item );
				seccionCap7.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
														
		final ArrayAdapter<CharSequence> seccionCap8 = ArrayAdapter.createFromResource(
				this, R.array.seccionCap8, android.R.layout.simple_spinner_item );
				seccionCap8.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
				
		final ArrayAdapter<CharSequence> seccionCapOtrasTomas = ArrayAdapter.createFromResource(
				this, R.array.seccionCapOtrasTomas, android.R.layout.simple_spinner_item );
				seccionCapOtrasTomas.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
				
				
		spiCapitulo.setAdapter(capitulos);
		/*spiSeccion.setAdapter(seccionCap1);
		spiPregunta.setAdapter(pregunta);*/
		spiCapitulo.setOnItemSelectedListener(new OnItemSelectedListener() {

			@Override
			public void onItemSelected(AdapterView<?> arg0, View arg1,
					int pos, long arg3) {
				String capitulo = spiCapitulo.getItemAtPosition(pos).toString();
				if(capitulo.equals("Capitulo 1")){
					tviEdificacion.setVisibility(View.GONE);
					tviPiso.setVisibility(View.GONE);
					tviAmbiente.setVisibility(View.GONE);
					eteEdificacion.setVisibility(View.GONE);
					etePiso.setVisibility(View.GONE);
					eteAmbiente.setVisibility(View.GONE);
					spiSeccion.setAdapter(seccionCap1);
				}
				if(capitulo.equals("Capitulo 2")){
					tviEdificacion.setVisibility(View.GONE);
					tviPiso.setVisibility(View.GONE);
					tviAmbiente.setVisibility(View.GONE);
					eteEdificacion.setVisibility(View.GONE);
					etePiso.setVisibility(View.GONE);
					eteAmbiente.setVisibility(View.GONE);
					spiSeccion.setAdapter(seccionCap2);
				}
				if(capitulo.equals("Capitulo 3")){
					tviEdificacion.setVisibility(View.GONE);
					tviPiso.setVisibility(View.GONE);
					tviAmbiente.setVisibility(View.GONE);
					eteEdificacion.setVisibility(View.GONE);
					etePiso.setVisibility(View.GONE);
					eteAmbiente.setVisibility(View.GONE);
					spiSeccion.setAdapter(seccionCap3);
				}
				if(capitulo.equals("Capitulo 4")){
					tviEdificacion.setVisibility(View.GONE);
					tviPiso.setVisibility(View.GONE);
					tviAmbiente.setVisibility(View.GONE);
					eteEdificacion.setVisibility(View.GONE);
					etePiso.setVisibility(View.GONE);
					eteAmbiente.setVisibility(View.GONE);
					spiSeccion.setAdapter(seccionCap4);
				}
				if(capitulo.equals("Capitulo 5")){
					tviEdificacion.setVisibility(View.GONE);
					tviPiso.setVisibility(View.GONE);
					tviAmbiente.setVisibility(View.GONE);
					eteEdificacion.setVisibility(View.GONE);
					etePiso.setVisibility(View.GONE);
					eteAmbiente.setVisibility(View.GONE);
					spiSeccion.setAdapter(seccionCap5);
				}
				if(capitulo.equals("Capitulo 6")){
					tviEdificacion.setVisibility(View.VISIBLE);
					tviPiso.setVisibility(View.VISIBLE);
					tviAmbiente.setVisibility(View.VISIBLE);
					eteEdificacion.setVisibility(View.VISIBLE);
					etePiso.setVisibility(View.VISIBLE);
					eteAmbiente.setVisibility(View.VISIBLE);
					spiSeccion.setAdapter(seccionCap6);
				}
				if(capitulo.equals("Capitulo 7")){
					tviEdificacion.setVisibility(View.VISIBLE);
					tviPiso.setVisibility(View.GONE);
					tviAmbiente.setVisibility(View.GONE);
					eteEdificacion.setVisibility(View.VISIBLE);
					etePiso.setVisibility(View.GONE);
					eteAmbiente.setVisibility(View.GONE);
					spiSeccion.setAdapter(seccionCap7);
				}
				if(capitulo.equals("Capitulo 8")){
					tviEdificacion.setVisibility(View.VISIBLE);
					tviPiso.setVisibility(View.GONE);
					tviAmbiente.setVisibility(View.GONE);
					eteEdificacion.setVisibility(View.VISIBLE);
					etePiso.setVisibility(View.GONE);
					eteAmbiente.setVisibility(View.GONE);
					spiSeccion.setAdapter(seccionCap8);
				}
				if(capitulo.equals("Otras tomas")){
					tviEdificacion.setVisibility(View.GONE);
					tviPiso.setVisibility(View.GONE);
					tviAmbiente.setVisibility(View.GONE);
					eteEdificacion.setVisibility(View.GONE);
					etePiso.setVisibility(View.GONE);
					eteAmbiente.setVisibility(View.GONE);
					spiSeccion.setAdapter(seccionCapOtrasTomas);
				}
			}

			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
				// TODO Auto-generated method stub
				
			}
		});
		
	}
	
	

	@Override
	public void onClick(View v) {
		switch(v.getId()){
		case R.id.butFoto:
			if(spiCapitulo.getSelectedItem().toString().equals("Capitulo 6") && 
					eteEdificacion.getText().toString().isEmpty() && etePiso.getText().toString().isEmpty() 
					&& eteAmbiente.getText().toString().isEmpty() && etePregunta.getText().toString().isEmpty()){
				Toast.makeText(CapituloIX_Activity.this, "Debe ingresar los datos respectivos para la foto", 
						Toast.LENGTH_SHORT).show();
				break;
			} else{
				if(spiCapitulo.getSelectedItem().toString().equals("Capitulo 7") && 
						eteEdificacion.getText().toString().isEmpty() && etePregunta.getText().toString().isEmpty()){
					Toast.makeText(CapituloIX_Activity.this, "Debe ingresar el numero de edificaciones", 
							Toast.LENGTH_SHORT).show();
					break;
				} else{
					if(spiCapitulo.getSelectedItem().toString().equals("Capitulo 8") && 
							eteEdificacion.getText().toString().isEmpty() && etePregunta.getText().toString().isEmpty()){
						Toast.makeText(CapituloIX_Activity.this, "Debe ingresar el numero de edificaciones", 
								Toast.LENGTH_SHORT).show();
						break;
					} else{
						if(!etePregunta.getText().toString().isEmpty()){
							takePhoto();
						} else{
							Toast.makeText(CapituloIX_Activity.this, "Debe ingresar la pregunta antes de " +
									"tomar la fotografia", Toast.LENGTH_SHORT).show();
							break;
						}
					}
				}
			}
		}
		
	}
	
	private void takePhoto() {
		final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
		intent.putExtra(MediaStore.EXTRA_OUTPUT,
				Uri.fromFile(getTempFile(this)));
		startActivityForResult(intent, TAKE_PHOTO_CODE);
		rutaFoto = getTempFile(getApplicationContext()).getAbsolutePath(); ;
		cap9Dao.ingresarFotoCapituloIX(CodLocal, predio, rutaFoto, (VERSION + 1));
		//utilDB.ingresarCapitulo9_F(CodLocal, predio, (spiCapitulo.getSelectedItemPosition() + 1), rutaFoto, (VERSION + 1));
	}

	private File getTempFile(Context context) {
		int tamanoPregunta = 0;
		int tamanoCapitulo = spiCapitulo.getSelectedItem().toString().length();
		int tamanoSeccion = spiSeccion.getSelectedItem().toString().length();
		String ultimoCaracterCapitulo = spiCapitulo.getSelectedItem().toString().
				substring(tamanoCapitulo - 1, tamanoCapitulo).toString();
		String ultimoCaracterSeccion = spiSeccion.getSelectedItem().toString().
				substring(tamanoSeccion - 1, tamanoSeccion).toString();
		File sdCard = Environment.getExternalStorageDirectory();
		File dir = null;
		if(!spiCapitulo.getSelectedItem().toString().equals("Otras tomas")){
			dir = new File(sdCard.getAbsolutePath() + "/CIE2013/" + CodLocal + "/PRED_" + 
					predio + "/CAP" + ultimoCaracterCapitulo + "/SEC_" + 
					ultimoCaracterSeccion + "/");
		} else{
			dir = new File(sdCard.getAbsolutePath() + "/CIE2013/" + CodLocal + "/PRED_" + 
				predio + "/OTROS/" + spiSeccion.getSelectedItem().toString() + "/");
		}
	
		final File path = dir;
		if (!path.exists()) {
			path.mkdirs();
		}
		File[] files = dir.listFiles();
        int numberOfImages=files.length;
        Calendar c = Calendar.getInstance();
        int day = c.get(Calendar.DATE);
        int month = (c.get(Calendar.MONTH) + 1);
        int year = c.get(Calendar.YEAR);
        int hour = c.get(Calendar.HOUR_OF_DAY);
        int minutes = c.get(Calendar.MINUTE);
        int seconds = c.get(Calendar.SECOND);
        String horaConvertida = "";
        String minutosConvertidos = "";
        String segundosConvertidos = "";
        String diaConvertido = "";
        String mesConvertido = "";
        if(hour < 10){
        	horaConvertida = "0" + hour;
        } else{
        	horaConvertida = "" + hour;
        }
        if(minutes < 10){
        	minutosConvertidos = "0" + minutes;
        } else{
        	minutosConvertidos = "" + minutes;
        }
        if(seconds < 10){
        	segundosConvertidos = "0" + seconds;
        } else{
        	segundosConvertidos = "" + seconds;
        }
        if(day < 10){
        	diaConvertido = "0" + day;
        } else{
        	diaConvertido = "" + day;
        }
        if(month < 10){
        	mesConvertido = "0" + month;
        } else{
        	mesConvertido = "" + month;
        }
        //rutaFoto = dir + "/foto" + (numberOfImages + 1) + ".jpg";
        if(!spiCapitulo.getSelectedItem().toString().equals("Otras tomas")){
        	if(spiCapitulo.getSelectedItem().toString().equals("Capitulo 6")){
        		return new File(path, CodLocal + "_" + predio + "_" + 
            			spiCapitulo.getSelectedItem().toString() + "_" + 
            			spiSeccion.getSelectedItem().toString() + "_E" + 
            			eteEdificacion.getText().toString() + "_P" + 
            			etePiso.getText().toString() + "_A" +
            			eteAmbiente.getText().toString() + "_P" +
            			etePregunta.getText().toString() + "_" + 
            			diaConvertido + mesConvertido + year + "_" +
            			horaConvertida + minutosConvertidos + segundosConvertidos +
            			".png");
        	} 
        	if(spiCapitulo.getSelectedItem().toString().equals("Capitulo 7") || 
        			spiCapitulo.getSelectedItem().toString().equals("Capitulo 8")){
        		return new File(path, CodLocal + "_" + predio + "_" + 
            			spiCapitulo.getSelectedItem().toString() + "_" + 
            			spiSeccion.getSelectedItem().toString() + "_E" + 
            			eteEdificacion.getText().toString() + "_P" + 
            			etePregunta.getText().toString() + "_" + 
            			diaConvertido + mesConvertido + year + "_" +
            			horaConvertida + minutosConvertidos + segundosConvertidos +
            			".png");
        	} else{
        		return new File(path, CodLocal + "_" + predio + "_" + 
            			spiCapitulo.getSelectedItem().toString() + "_" + 
            			spiSeccion.getSelectedItem().toString() + "_P" + 
            			etePregunta.getText().toString() + "_" + 
            			diaConvertido + mesConvertido + year + "_" +
            			horaConvertida + minutosConvertidos + segundosConvertidos +
            			".png");
        	}
        }
        else{
            //rutaFoto = dir + "/foto" + (numberOfImages + 1) + ".jpg";
			//cap9Dao.ingresarFotoCapituloIX(CodLocal, predio, rutaFoto, (VERSION + 1));
        	return new File(path, CodLocal + "_" + predio + "_" + 
        			spiCapitulo.getSelectedItem().toString() + "_" + 
        			spiSeccion.getSelectedItem().toString() + "_P" + 
        			etePregunta.getText().toString() + "_" +
        			diaConvertido + mesConvertido + year + "_" +
        			horaConvertida + minutosConvertidos + segundosConvertidos +
        			".png");
        }
	}
	
	@Override
	public void onBackPressed() {
		super.onBackPressed();
		if(pregunta){
			finish();
		} else{
			if(rural == 1){
				Intent irPredio = new Intent(
						getApplicationContext(),
						Menu_Rural.class);
				irPredio.putExtras(getIntent().getExtras());
				startActivity(irPredio);
				finish();
			} else{
				Intent irMenu = new Intent(CapituloIX_Activity.this, CapituloI_Capitulos_Activity.class);
				Bundle f = getIntent().getExtras();
				irMenu.putExtras(f);
				startActivity(irMenu);
				finish();
			}
		}
	}
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// TODO Auto-generated method stub
		getMenuInflater().inflate(R.menu.menu_capitulo_ix, menu);
		return super.onCreateOptionsMenu(menu);
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// TODO Auto-generated method stub
		switch (item.getItemId()) {
		case R.id.mnSalir:
			AlertDialog.Builder dialogo1 = new AlertDialog.Builder(this);
			dialogo1.setTitle("Importante");
			dialogo1.setMessage("Deseas Salir ?");
			dialogo1.setIcon(android.R.drawable.ic_dialog_alert);
			dialogo1.setCancelable(false);
			dialogo1.setPositiveButton("Si",
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialogo1, int id) {
						System.exit(0);
					}
				});

			dialogo1.setNegativeButton("No",
					new DialogInterface.OnClickListener() {
						public void onClick(DialogInterface dialogo1, int id) {
							return;
						}
					});
			dialogo1.show();
			break;
		default:
			break;
		}
		return super.onOptionsItemSelected(item);
	}
}
